本节介绍BaaS REST在密钥非托管模式下支持的查询类、交易类的接口能力,并提供各接口能力的使用示例。
查询类接口
查询交易
根据交易Hash查询交易内容,方法名称:QUERYTRANSACTION。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYTRANSACTION
bizid
是
string
链ID
hash
是
string
交易hash
请求示例
CallRestParam param = CallRestParam.builder(). method(Method.QUERYTRANSACTION). // 查询交易回执方法标识 hash(txHash). // 交易Hash,16进制编码字符串 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 build(); BaseResp baseResp=restClient.chainCall(param); if(result.isSuccess()) { // 解析返回的交易内容 ReplyTransaction transaction = JSON.parseObject(resp.getData(), ReplyTransaction.class); TransactionDO transactionDO = transaction.getTransactionDO(); // ... }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为ReplyTransaction结构
查询交易回执
根据交易Hash查询交易回执内容,方法名称:QUERYRECEIPT。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYRECEIPT
bizid
是
string
链ID
hash
是
string
交易hash
请求示例
CallRestParam param = CallRestParam.builder(). method(Method.QUERYRECEIPT). // 查询交易回执方法标识 hash(txHash). // 交易Hash,16进制编码字符串 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的交易回执 ReceiptDecoration receipt = JSON.parseObject(resp.getData(), ReceiptDecoration.class); // ... }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为ReceiptDecoration结构,result为业务结果
(重试)同步查询交易回执
在发送(异步)交易请求后,为了获取交易最终执行结果,需要到链上查询获取交易执行结果。BaaS REST SDK中提供了通过重试查询获取交易执行结果的方法,方法定义如下。该方法实际上是查询交易回执的一个客户端封装。
请求参数
参数名
必选
类型
说明
bizid
是
string
链ID
hash
是
string
区块查询参数
请求示例
BaseResp baseResp=restClient.multipleQueryReceipt( bizid, //链ID hash //交易hash ); if(baseResp.isSuccess()) { // 交易回执信息 ReceiptDecoration receipt = JSON.parseObject(resp.getData(), ReceiptDecoration.class); //... }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为ReceiptDecoration结构,result为业务结果
查询区块头
查询指定区块的区块头信息,方法名称:QUERYBLOCK。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYBLOCK
bizid
是
string
链ID
requestStr
是
string
区块高度
请求示例
CallRestParam param = CallRestParam.builder(). method(Method.QUERYBLOCK). // 查询区块头方法标识 requestStr(String.valueOf(blockHeight)). // 区块高度参数 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的区块头 ReplyBlock replyBlock = JSON.parseObject(resp.getData(), ReplyBlock.class); BlockHeader header = replyBlock.getBlock().getBlockHeader(); // ... }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为ReplyBlock结构
查询区块
查询指定高度的区块内容,方法名称:QUERYBLOCKBODY。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYBLOCKBODY
bizid
是
string
链ID
requestStr
是
string
区块高度
请求示例
CallRestParam param = CallRestParam.builder(). method(Method.QUERYBLOCKBODY). // 查询区块内容方法标识 requestStr(String.valueOf(blockHeight)). // 区块高度参数 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的区块 JSONObject jsonObject = JSONObject.parseObject(resp.getData()); com.alipay.mychain.sdk.domain.block.Block block = new com.alipay.mychain.sdk.domain.block.Block(); block.fromJson(jsonObject); // ... }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为Block结构
查询最新区块头
查询最新的区块块头信息,方法名称:QUERYLASTBLOCK。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYLASTBLOCK
bizid
是
string
链ID
请求示例
CallRestParam param = CallRestParam.builder(). method(Method.QUERYLASTBLOCK). // 查询最新块头方法名 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的最新区块头 ReplyBlock replyBlock = JSON.parseObject(resp.getData(), ReplyBlock.class); BlockHeader header = replyBlock.getBlock().getBlockHeader(); // ... });
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为ReplyBlock结构
查询块头列表
查询满足条件的区块块头信息列表,方法名称:QUERYBLOCKHEADERINFOSRAW。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYBLOCKHEADERINFOSRAW
bizid
是
string
链ID
requestStr
是
string
区块查询参数
请求示例
String requestStr = restClient.createQUeryBlockHeaderInfosRequestStr( blockNumber, // (起始)区块高度 hash, // (起始)区块Hash maxAmount, // 最多获取区块数 reverse); // 获取方向, 0: 正向,1: 反向 CallRestParam param = CallRestParam.builder(). method(Method.QUERYBLOCKHEADERINFOSRAW). // 查询方法名 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 requestStr(requestStr)). // 区块查询参数 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的区块头列表信息 byte[] content = Base64.decodeBase64(resp.getData()); RlpList rlpList = Rlp.decode2(content); QueryBlockHeaderInfosResponse response = new QueryBlockHeaderInfosResponse(); response.fromRlp(rlpList); }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
需要进行Base64解码,然后使用Rlp解码,可以转换为QueryBlockHeaderInfosResponse
查询账户
查询指定名称的账户信息,方法名称:QUERYACCOUNT。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:QUERYACCOUNT
bizid
是
string
链ID
requestStr
是
string
账户查询参数信息
账户查询参数
参数名
必选
类型
说明
queryAccount
是
string
区块链账户名
请求示例
AccountRequest request = new AccountRequest(); request.setQueryAccount(queryAccount); // 区块链账户名 CallRestParam param = CallRestParam.builder(). method(Method.QUERYACCOUNT). // 查询账户方法名 bizid(bizId). // 链ID,若未设置,使用客户端配置默认链 requestStr(JSON.toJSONString(request)). // 账户查询参数 build(); BaseResp baseResp=restClient.chainCall(param); if(baseResp.isSuccess()) { // 解析返回的账户信息 Account account = new Account(); account.fromJson(JSON.parseObject(baseResp.getData())); }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码
data
string
交易的JSON串,可以转换为Account结构
交易类接口
(异步)存证
客户端签名存证提供客户端打包签名交易、异步执行的原生存证功能,方法名称:DEPOSIT。
执行完成后,如果返回200,可以调用查询交易回执来查询最终存证结果。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:DEPOSIT
bizid
是
string
链ID
hash
是
string
交易hash,通过构造ClientParam来计算获得
signData
是
string
签名后交易内容,通过构造ClientParam来计算获得
ClientParam
参数名
必选
类型
说明
accountName
是
string
发起存证的链账户
content
是
string
存证数据内容
gas
是
string
最多允许消耗Gas,暂未启用,设置为0L
请求示例
// 创建存证签名交易 ClientParam clientParam=restClient.createDepositTransaction( accountName, // 发起存证的链账户 content, // 存证数据内容 gas); // 最多允许消耗Gas // 发送存证请求 BaseResp baseResp = restClient.chainCall( clientParam.getHash(), // 交易Hash bizId, //链ID,若未设置:使用客户端默认配置 clientParam.getSignData(), // 签名后交易内容 Method.DEPOSIT); // 方法名称 if(baseResp.isSuccess()) { // 交易请求发送成功 }
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码,200表示成功
data
string
如果返回成功,则data无信息,否则是异常信息
(异步)部署合约
部署合约实现客户端打包签名交易、异步执行的区块链合约部署功能,方法名称:DEPLOYCONTRACT。
执行完成后,如果返回200,可以调用查询交易回执来查询最终合约部署结果。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:DEPLOYCONTRACT
bizid
是
string
链ID
hash
是
string
交易hash,通过构造ClientParam来计算获得
signData
是
string
签名后交易内容,通过构造ClientParam来计算获得
ClientParam
请求示例
// 创建部署合约签名交易 ClientParam clientParam=restClient.createDepolyContractTransaction( accountName, // 部署合约的账户名 contractName, // 合约名字(用于生成合约地址) contractCode, // 合约编译后代码 contractType, // 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM gas, // 最多允许消耗Gas secretKey); // 私钥信息 // 发送合约部署请求 BaseResp resp=restClient.chainCall( clientParam.getHash(), // 交易Hash bizId, //链ID,若未设置:使用客户端默认配置 clientParam.getSignData(), // 签名后交易内容 Method.DEPLOYCONTRACT); //方法名称
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码,200表示成功
data
string
如果返回成功,则data为交易hash,否则是异常信息
参数名 | 必选 | 类型 | 说明 |
accountName | 是 | string | 部署合约的账户名 |
contractName | 是 | string | 合约名字(用于生成合约地址) |
contractCode | 是 | string | 合约编译后代码 |
contractType | 是 | string | 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM |
gas | 是 | string | 最多允许消耗Gas,暂未启用,设置为0L |
secretKey | 否 | string | 使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要传空 |
(异步)更新合约
更新合约实现客户端打包签名交易、异步执行的区块链合约升级更新功能,方法名称:UPDATECONTRACT。
执行完成后,如果返回200,可以调用查询交易回执来查询最终合约更新结果。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:UPDATECONTRACT
bizid
是
string
链ID
hash
是
string
交易hash,通过构造ClientParam来计算获得
signData
是
string
签名后交易内容,通过构造ClientParam来计算获得
ClientParam
请求示例
// 创建部署合约签名交易 ClientParam clientParam=restClient.createUpdateContractTransaction( accountName, // 部署合约的账户名 contractName, // 合约名字(用于生成合约地址) contractCode, // 合约编译后代码 contractType, // 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM gas, // 最多允许消耗Gas secretKey); // 私钥信息 // 发送合约部署请求 BaseResp resp=restClient.chainCall( clientParam.getHash(), // 交易Hash bizId, //链ID,若未设置:使用客户端默认配置 clientParam.getSignData(), // 签名后交易内容 Method.UPDATECONTRACT); //方法名称
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码,200表示成功
data
string
如果返回成功,则data为交易hash,否则是异常信息
参数名 | 必选 | 类型 | 说明 |
accountName | 是 | string | 部署合约的账户名 |
contractName | 是 | string | 合约名字(用于生成合约地址) |
contractCode | 是 | string | 合约编译后代码 |
contractType | 是 | string | 合约类型,如:VMTypeEnum.EVM、VMTypeEnum.WASM |
gas | 是 | string | 最多允许消耗Gas,暂未启用,设置为0L |
secretKey | 否 | string | 使用通用隐私保护合约链发起交易时,需要自定义设置secretKey,例如:123456,如果不需要传空 |
(异步)调用wasm合约
调用wasm合约实现客户端打包签名交易、异步执行的wasm合约调用功能,方法名称:CALLWASMCONTRACT。
执行完成后,如果返回200,可以调用查询交易回执来查询最终合约调用结果。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:CALLWASMCONTRACT
bizid
是
string
链ID
hash
是
string
交易hash,通过构造ClientParam来计算获得
signData
是
string
签名后交易内容,通过构造ClientParam来计算获得
ClientParam
请求示例
// 创建调用合约签名交易 ClientParam clientParam=restClient.createCallWasmContractTransaction( accountName, // 调用合约的账户名 contractName, // 合约名称,用于生成合约地址 outTypes, // 输出结果解析方式,当前未使用 methodSignature, // 合约方法签名,如:add(int64,int64) params, // 合约调用参数,JSON字符串格式,如:[123,1] gas); // 最多允许消耗Gas // 发送合约调用请求 BaseResp resp=restClient.chainCall( clientParam.getHash(), // 交易Hash bizId, //链ID,若未设置:使用客户端默认配置 clientParam.getSignData(), // 签名后交易内容 Method.CALLWASMCONTRACT); // 调用的方法
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码,200表示成功
data
string
如果返回成功,则data无信息,否则是异常信息
参数名 | 必选 | 类型 | 说明 |
accountName | 是 | string | 调用合约的账户名 |
contractName | 是 | string | 合约名字 |
outTypes | 是 | string | 输出结果解析方式 |
methodSignature | 是 | string | 合约方法签名,如: |
params | 是 | string | 合约调用参数,JSON字符串格式,如:[123,1] |
gas | 是 | string | 最多允许消耗Gas,暂未启用,设置为0L |
(异步)调用solidity合约
调用solidity合约实现客户端打包签名交易、异步执行的solidity合约调用功能,方法名称:CALLCONTRACT。
执行完成后,如果返回200,可以调用查询交易回执来查询最终合约调用结果。
请求参数
参数名
必选
类型
说明
method
是
string
方法名称:CALLCONTRACT
bizid
是
string
链ID
hash
是
string
交易hash,通过构造ClientParam来计算获得
signData
是
string
签名后交易内容,通过构造ClientParam来计算获得
ClientParam
请求示例
// 创建调用合约签名交易 ClientParam clientParam=restClient.createCallContractTransaction( accountName, // 调用合约的账户名 contractName, // 合约名称,用于生成合约地址 outTypes, // 输出结果解析方式,当前未使用 methodSignature, // 合约方法签名,如:add(int64,int64) params, // 合约调用参数,JSON字符串格式,如:[123,1] gas); // 最多允许消耗Gas // 发送合约调用请求 BaseResp resp=restClient.chainCall( clientParam.getHash(), // 交易Hash bizId, //链ID,若未设置:使用客户端默认配置 clientParam.getSignData(), // 签名后交易内容 Method.CALLCONTRACT); // 调用的方法
返回参数
参数名
类型
说明
success
boolean
请求是否成功
code
string
状态码,200表示成功
data
string
如果返回成功,则data无信息,否则是异常信息
参数名 | 必选 | 类型 | 说明 |
accountName | 是 | string | 调用合约的账户名 |
contractName | 是 | string | 合约名字 |
outTypes | 是 | string | 输出结果解析方式 |
methodSignature | 是 | string | 合约方法签名,如: |
params | 是 | string | 合约调用参数,JSON字符串格式,如:[123,1] |
gas | 是 | string | 最多允许消耗Gas,暂未启用,设置为0L |